package cn.seapon.talker.infocarrier;

import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;

import cn.seapon.talker.common.ChatMsgEntity;
import cn.seapon.talker.common.FriendListInfomation;
import cn.seapon.talker.common.GroupInfo;
import cn.seapon.talker.common.UserInformation;
import cn.seapon.talker.db.AccountDao;
import cn.seapon.talker.db.MessageEntityDao;

/** 
 * @author 作者 E-mail: 
 * @version 创建时间：2014年12月29日 下午2:03:33 
 * 类说明 
 */
public class SharedItems {
	private static final String TAG = "";
	
	public static String SERVER_HOST_IP = "acerantor.xicp.net";
	
	public static Socket socket = null;
	
	/**
	 * 登录返回的信息
	 */
	public static FriendListInfomation friendListInfomation = null;
	public static GroupInfo groupInfo = null;
	public static UserInformation userInformation = null;
	
	public static AccountDao accountDao = null;
	public static MessageEntityDao messageEntityDao = null;
	
	public static NewVersionInfos newVersionInfos = null;	
	public static PackageVersionInfos packageVersionInfos  = null;
	
	//头像无资源ID的映射
	public static HashMap<String, Integer> avatarMap = null;
	
	/**
	 * 处理接收到聊天消息的处理方式 
	 * ①当前聊天对象id：直接发送给ChatActivity中的BroadcastReceiver，不在聊天界面时置空
	 * ②暂存在内存中的消息列表，但栈顶的窗口不是MainActivity时，新来的消息将保存在消息列表中，并发通知
	 * 		当主页面得到焦点时，取得消息并显示，或者通过notifaction开启聊天界面时将消息显示
	 */
	public static String currentChat = "";
	
	private static HashMap<String, ChatMsgEntity> unreadMsg = new HashMap<String, ChatMsgEntity>();
	
	public static void add(ChatMsgEntity entity) {
		String friend = entity.getSenderId();
		unreadMsg.put(friend, entity);
	}
	/**
	 * 获取某一个用户的全部未读消息，且从消息队列中删除
	 * @return
	 */
	public static ArrayList<ChatMsgEntity> getAllEntitiesById(String friendid){
		int count = 0;
		ArrayList<ChatMsgEntity> list = new ArrayList<ChatMsgEntity>();
		for (Entry<String, ChatMsgEntity> entry : unreadMsg.entrySet()) {
			if (entry.getKey() == friendid) {
				list.add(entry.getValue());
				unreadMsg.remove(entry.getKey());
				count ++;
			}
		}
		return list;
	}
	/**
	 * 获取全部未读取的消息，但不删除
	 * @param friendid
	 * @return
	 */
	public static ArrayList<ChatMsgEntity> getUnreadInfo(String friendid){
		int count = 0;
		ArrayList<ChatMsgEntity> list = new ArrayList<ChatMsgEntity>();
		for (Entry<String, ChatMsgEntity> entry : unreadMsg.entrySet()) {
			if (entry.getKey() == friendid) {
				list.add(entry.getValue());
				count ++;
			}
		}
		return list;
	}
	
	/**
	 * 写入数据库中
	 */
	public static void saveUnread() {
		
	}
	
}
